package com.dd.controller;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.TreeView;
import javafx.scene.control.TreeItem;
import javafx.scene.layout.StackPane;

import java.io.IOException;
/*`MainController` 是 JavaFX 应用中“主界面”的控制器类，主要负责主界面左侧菜单（TreeView）和右侧内容区（StackPane）的联动和页面切换。它的主要功能包括：

1. **菜单监听与页面切换**：  
   监听左侧菜单（`menuTreeView`）的选项变化，根据用户点击的菜单项，动态加载不同的功能页面（如“公众监督数据列表”、“确认AQI数据列表”、“省分组检查统计”、“AQI指数分布统计”、“AQI指数趋势统计”、“其他统计”等）。

2. **FXML页面加载**：  
   每个菜单项对应一个 FXML 页面，控制器会用 `FXMLLoader` 加载对应的界面，并将其显示在右侧的 `contentArea` 区域。

3. **默认页面**：  
   初始化时默认加载“公众监督数据列表”页面。

---

**总结**：  
这个类就是“主界面”的控制器，负责根据左侧菜单的选择，切换和显示不同的功能页面，实现主界面的导航和内容展示。
*/

public class MainController {

    @FXML
    private TreeView<String> menuTreeView;

    @FXML
    private StackPane contentArea;

    @FXML
    private void initialize() {
        // 设置菜单点击监听器
        menuTreeView.getSelectionModel().selectedItemProperty().addListener((obs, oldVal, newVal) -> {
            if (newVal == null) return;
            String value = newVal.getValue();
            switch (value) {
                case "公众监督数据列表":
                    loadPublicDataList();
                    break;
                case "确认AQI数据列表":
                    loadAqiDataList();
                    break;
                case "省分组检查统计":
                    loadProvinceStatistics();
                    break;
                case "AQI指数分布统计":
                    loadAqiDistributionStatistics();
                    break;
                case "AQI指数趋势统计":
                    loadAqiTrendStatistics();
                    break;
                case "其他统计":
                    loadOtherStatistics();
                    break;
                // 其它case...
            }
        });
        
        // 默认加载公众监督数据列表
        loadPublicDataList();
    }

    private void loadPublicDataList() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/dd/public_data_list.fxml"));
            Parent publicDataListRoot = loader.load();
            contentArea.getChildren().clear();
            contentArea.getChildren().add(publicDataListRoot);
            } catch (IOException e) {
                e.printStackTrace();
        }
    }

    private void loadAqiDataList() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/dd/aqi_data_list.fxml"));
            Parent aqiListRoot = loader.load();
            contentArea.getChildren().clear();
            contentArea.getChildren().add(aqiListRoot);
            } catch (IOException e) {
                e.printStackTrace();
        }
    }

    private void loadProvinceStatistics() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/dd/province_statistics.fxml"));
            Parent statisticsRoot = loader.load();
            contentArea.getChildren().clear();
            contentArea.getChildren().add(statisticsRoot);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void loadAqiDistributionStatistics() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/dd/aqi_distribution_statistics.fxml"));
            Parent distributionRoot = loader.load();
            contentArea.getChildren().clear();
            contentArea.getChildren().add(distributionRoot);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void loadAqiTrendStatistics() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/dd/aqi_trend_chart.fxml"));
            Parent trendRoot = loader.load();
            contentArea.getChildren().clear();
            contentArea.getChildren().add(trendRoot);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void loadOtherStatistics() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/dd/other_data_statics.fxml"));
            Parent trendRoot = loader.load();
            contentArea.getChildren().clear();
            contentArea.getChildren().add(trendRoot);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

